package org.slf4j;


import com.chapter.sample.logging.TtlMDCAdapter;

/**
 * 注：该类必须在 org.slf4j 包下，否则无法更换 MDC 的 mdcAdapter 属性。
 * 实际还有一种方法是直接重写 org.slf4j.impl.StaticMDCBinder 但如果测试未生效建议仍使用 GameMdcBinder 来重新绑定即可
 *
 * @author zlikun
 * @see org.slf4j.impl.StaticMDCBinder
 * @since 2023/2/3
 */
public class GameMdcBinder {

    /**
     * 重新绑定 MDC 的 Adapter 实现，以应用 TTL 解决线程池无法有效通过 MDC 传递信息问题，需要在程序代码最开始位置执行（参考 cp-user 的用法）
     */
    public static synchronized void rebind() {
        MDC.mdcAdapter = new TtlMDCAdapter();
    }

}
